package com.itheima.health.dao;

import com.itheima.health.pojo.OrderSetting;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author likepei
 * @Date 2020/2/11 16:17
 * @Version v1.0
 * @Description 预约设置的持久层接口
 */
public interface OrderSettingDao {

    /**
     * 检查此数据(日期)是否存在
     * @param orderDate 预设的日期
     * @return
     */
    Long countByOrderDate(@Param("orderDate") Date orderDate);

    /**
     * 基于预约日期 更新预约设置
     * @param orderSetting
     */
    void update(OrderSetting orderSetting);

    /**
     * 添加预约设置
     * @param orderSetting
     */
    void add(OrderSetting orderSetting);

    /**
     * 获取指定月的预约设置的数据
     * @param map
     * @return
     */
    List<OrderSetting> getOrderSettingByMonth(Map<String, String> map);

    /**
     * 根据日期获取预约设置对象
     * @param orderDate
     * @return
     */
    OrderSetting findByOrderDate(Date orderDate);

    /**
     * 根据体检日期查询主键
     * @param date
     * @return
     */
    Integer findKeyIdByOrderDate(Date date);

    /**
     * 根据主键id查询ordersetting对象并锁定
     * @param keyId
     * @return
     */
    OrderSetting findByKeyId(@Param("keyId") Integer keyId);
    /**
     * 删除过期数据
     * @param today
     */
    void deleteOrderSettingBeforeOrderDate(@Param("today") Date today);
}
